package com.codewsq.string;


import org.junit.Test;

import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/*
 *
 * String类使用说明：
 *   1. String是一个final类型类，本质是一个 final char[] 数组
 *   2. String有两种赋值得方式：
 *         ① 字面量赋值的方式：String str = "abc";
 *         ② new对象赋值的方式：String str = new String();
 * */
public class StringTest {

    /**
     * @param
     * @return void
     * @Desc:
     * @author codewsq
     * @date 2021/4/3 0003 15:45
     */
    @Test
    public void test2() {
        Byte b = 3;
        int c = b;
        System.out.println(b);
        System.out.println(c);
    }

    @Test
    public void test1() {
        // 1.使用字面量赋值得：通过字面量赋值的方式赋值，会直接存储到方法区的字符串常量池里，此时s1的地址值就是该字符串常量池
        // 当 s2 被赋值 相同的字符串值得时候，其引用地址会默认指向s1相同的地址（字符串常量池里），此时 s1 == s2 为true
        String s1 = "abc";
        String s2 = "abc";

        System.out.println(s1 == s2); // true
        System.out.println(s1.equals(s2)); // false

        String s3 = new String("abc");
        String s4 = new String("abc");

        System.out.println(s3 == s4); // false
        System.out.println(s3.equals(s4)); // true

        System.out.println(s1 == s3); // false
        System.out.println(s1 == s4); // false
        System.out.println(s2 == s3); // false
        System.out.println(s2 == s4); // false


        PrintStream printStream = new PrintStream(System.out) {
            @Override
            public void println(String x) {
                if ("a=10".equals(x)) {
                    x = "a=100";
                } else if ("b=10".equals(x)) {
                    x = "b=200";
                }
                super.println(x);
            }
        };

        System.setOut(printStream);

    }

    /**
     * @param name pwd
     * @return java.lang.String
     * @Desc:
     * @author codewsq
     * @date 2021/4/2 0002 17:16
     */
    public String test(String name, String pwd) {
        String result = name + pwd;
        return result;
    }


    @Test
    public void test3() {
        StringBuffer sb = new StringBuffer(2);
        sb.append("123").append("dsaf");
        System.out.println(sb.length());
    }

    @Test
    public void test4() {
        String s = "H";
        System.out.println(s.concat("ellloworld"));
    }

    @Test
    public void test5() {
        String str = "1432,135315,344534,34654,6867,76978,879,";
        System.out.println(str.substring(0, str.length() - 1));

    }


}
